Ubuntu16.04 搭建VPN服务

original url:

http://www.jianshu.com/p/8ac024216888

http://jingyan.baidu.com/article/ce09321b23cf7c2bff858fb8.html

http://www.guoziweb.com/archive/265.html

步骤:
1.第一步需要安装PPTP,以用来提供VPN服务.
sudo apt-get install pptpd
如果有问题的话比如提示找不到之类的,apt-get update 一下应该就可以了,然后再来一次就会自动完成安装。

2.装好了之后我们需要进行配置一下以让它可以使用.
sudo vi /etc/pptpd.conf

取消掉以下 2 行的注释并修改为自己设置的vpn网段:
localip 192.168.1.254
remoteip 192.168.150.234-238
分别是通过VPN连接后主机和客户端所使用的IP,可以自行修改。注意这个IP在下面还会用的到。

3.然后我们需要分配账号给自己使用.
sudo vi /etc/ppp/chap-secrets
这个是用户列表文件,在里面添加账户按如下格式
“username” pptpd “password” *

username为你的用户名,password为你的密码,用引号引起,最后的*号表示允许在任意IP连接到服务

4.至此服务弄好了,如果你sudo service pptpd restart一下,就应该已经能连接到该VPN了,但是连接了之后会发现还访问不了外网,如果是需要连接内网的vpn,可以不需要这一步操作。需要让他能访问外网。首先,
sudo vi /etc/ppp/pptpd-options
找到ms-dns,取消掉注释,改成你喜欢的DNS比如8.8.8.8,8.8.4.4

5.然后我们要开启内核IP转发
sudo vi /etc/sysctl.conf

取消掉 net.ipv4.ip_forward=1 这一行的注释,然后执行
sudo sysctl -p
使修改后的文件配置立即生效。

6.然后我们需要安装iptables,用来实现请求的NAT转发
sudo apt-get install iptables

然后开启NAT转发.
sudo iptables -F

sudo iptables -t nat -A POSTROUTING -s 192.168.150.0/24 -o eth0 -j MASQUERADE

sudo iptables -t nat -A POSTROUTING -s 192.168.150.0/24 -o br0 -j MASQUERADE (如果有虚拟网桥br0的话)

192.168.150.0/24是你在上面设置的IP段,让这个段转发,注意eth0是你连接外网的那块网卡,不一定是0也有可能是1或者看你的机器哪块网卡连的外网了。这样就以NAT的方式请求外网的东西了。不知道你的机器哪块网卡连的外网的话ifconfig一下看看哪个网卡是外网IP就知道了。

7.最后,我们需要重启服务,让配置生效 .
sudo service pptpd restart

现在你已经可以连接到VPN获取内网150网段的地址了。

参照:https://my.oschina.net/isnail/blog/363151

查看有没有人连接该vpn:

netstat -anpt|grep pptpd

或者

ifconfig 也能看出有ppp0/ppp1等。


遇到的问题1:

CTRL: PTY read or GRE write failed (pty,gre)=(6,7)

解决办法:

因为 /etc/pptpd.conf 配置文件中 logwtmp 参数不兼容导致,需要注释该参数,然后重启PPTPD 服务。

service pptpd restart

Ref:https://www.linuser.com/forum.php?mod=viewthread&tid=582


遇到的问题2:

怎么查看log信息,或者怎么打开debug模式?

解决办法:

打开debug模式:

把/etc/pptpd.conf文件的debug前面的注释去掉,然后重启PPTPD服务。

service pptpd restart

tailf /var/log/syslog 查看log信息


遇到的问题3:

如何设置开机自动启动:

解决办法:

打开/etc/rc.local文件,在exit 0语句前加入:在exit 0之前加上

sudo iptables -t nat -A POSTROUTING -s 192.168.150.0/24 -o eth0 -j MASQUERADE

sudo service pptpd start

======================================================

客户端怎么连接:

一, ubuntu 16.04:

1、首先安装PPTP-VPN拨号客户端
1

sudo apt-get install pptp-linux binutils

2、创建拨号连接
1

sudo pptpsetup –create testvpn –server 219.224.167.172 –username user –password pass –encrypt –start

各参数说明:

–create           后的是创建的连接名称,可以为任意名称;
–server           后接的是vpn服务器的IP;
–username     是用户名
–password      是密码,在这也可以没这个参数,命令稍后会自动询问。这样可以保证账号安全
–encrypt         是表示需要加密,不必指定加密方式,命令会读取配置文件中的加密方式
–start              是表示创建连接完后马上连接,如果你不想连,就不写 

3、连接或断开VPN
1
2

pon testvpn #<– VPN的“连接名称”
poff #<– 断开VPN连接

当连接成功后输入ifconfig命令会出现如下内容:

ppp0 Link encap:点对点协议

inet 地址:172.16.36.2  点对点:172.16.36.1  掩码:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  跃点数:1

接收数据包:7 错误:0 丢弃:0 过载:0 帧数:0

发送数据包:7 错误:0 丢弃:0 过载:0 载波:0

碰撞:0 发送队列长度:3

接收字节:70 (70.0 B)  发送字节:76 (76.0 B)

4、添加网关路由,让流量走VPN

从第3步可以看出,新增虚拟接口为ppp0,VPN的网关为172.16.36.1

在文件/etc/ppp/ip-up加入该网关。(此文件在VPN拨号成功后会默认调用该脚本,所以加在此文件中不需要手动添加)

route add default gw 172.16.36.1

也可以在终端手动敲入上面命令:
1

sudo route add default gw 172.16.36.1

5、删除原有默认网关路由

通过sudo route命令可以查看本机中已经添加的路由。

找到对应的路由,假设我这里还有一条路由是192.168.0.1使用以下命令进行删除之:
1

sudo route del default gw 192.168.0.1

6、试着打开facebook看看

OK了

🍭支持一根棒棒糖!